High order filters with controllable delay and performance

ABSTRACT

A digital filter is disclosed, the filter comprising a device for determining the initial condition of a partial filter input, using a partitioned filter input signal, and partitioned filter input coefficients and a device for determining the initial condition of a partial filter output, using a partitioned filter output signal, and partitioned filter output coefficients, and a device for realising said digital filter as a sum of outputs of Finite Impulse Response (“FIR”) filter elements, wherein inputs of the FIR filter elements are dependent upon said partial filter input initial condition and said partial filter output initial condition, and said current block of filter input signal values.

This application is a nationalization of and claims priority to PCTApplication No. PCT/AU01/00514, filed on May 4, 2001, which published,in accordance with PCT Article 21(2), in the English language aspublication No. WO 01/86808 on Nov. 15, 2001, which claims priority toAustralian Provisional Application No. PQ7321, filed on May 5, 2000.

FIELD OF THE INVENTION

The present invention relates to the field of digital filters and, inparticular, to a method and apparatus for efficient implementation ofhigh order filters, with controllable processing delay and performance.

BACKGROUND OF THE INVENTION

Digital filters are, among other applications, used to model electronicenvironments. Typical applications of this type include audio filteringor modelling of acoustic system characteristics. The use of such filtersallows incorporation of reverberation effects in audio signals, adaptiveecho cancellation where echoes are undesirable, and production of audiosignals having a “virtual reality” effect.

Other areas of application in addition to the audio field includeseismic analysis and robotics.

A digital filter can be represented mathematically in terms of itsimpulse response. This response can form the basis for physicalimplementation which can fall into one of two distinct classes, namelyFinite Impulse Response (FIR) filter implementations, and InfiniteImpulse Response (HR) filter implementations. In general, as thecomplexity of the environment being modelled by the digital filterincreases, the corresponding complexity of the filter structure mustalso increase, if it is to accurately, or at least realistically, modelthe environment. This correspondence between complexity of the modelledenvironment and the complexity of the filter structure applies to bothFIR and IIR filter implementations. The complexity of the resultingfilter is defined by the order of the filter structure.

Digital filters may, in principle, be implemented in the time domain, inwhich case a mathematical convolution process is used to relate theoutput of the filter to the input of the filter. Digital filters may,alternatively, be implemented in the transform domain, using, forexample, Fast Fourier Transform AFT) techniques. In contrast to the timedomain implementation where the convolution operation is required, inthe transform domain a multiplication process relates the output signalof the filter to the input signal. This results in significantsimplification and consequently, a reduction in the number ofcomputations required when implementing a filter in the transformdomain, as opposed to the time domain.

FFT filter implementation methods do, however, have a drawback in thatthey are block processes. Thus, where “N” is the order of the filterbeing considered, “N” samples of a digital signal must generally bestored before the first output of the filter can occur. This blockprocessing therefore introduces delay (or latency) in the filterprocessing. In certain applications, latency causes unacceptableperformance. For example, if audio and video signals are both beingdigitally processed in order to produce a multi-media presentation,differential delay between the audio and video signals of more than 10milliseconds may cause lack of synchronisation to be perceived by aviewer.

Digital filters which are implemented using FIR techniques can,notwithstanding their fundamental block processing nature, beimplemented in a manner in which latency may be reduced This requiresthat the impulse response of the filter which is being modelled bepartitioned into a number of sections along a time axis, and that thesesections each be processed by a suitable FFT structure. Further detailon this process may be found in U.S. Pat. No. 5,502,747 (McGrath). It isnoted that McGrath is applicable to FIR filter implementations, howevernot to IIR filter implementations.

It is often the case that the impulse response which characterises theparticular system being modelled has most of its energy, andconsequently the important information, concentrated in the initialportion of the impulse response. Notwithstanding this distribution ofenergy and information, the system impulse response may often extend intime well beyond this initial portion FIR filter implementations areoften approximated by implementing only the initial portion of theimpulse response. This achieves an economic filter design, since thebulk of the information contained in the impulse response is included inthe FIR model. The penalty however, is that the information in the“tail” of the impulse response is lost. Although this information may beof secondary importance, it may nonetheless be significant whenconsidering the realism achieved by a filter which models an acoustic orother environment.

IIR filters are a generalisation of the FIR case and can, in somecircumstances, have a simpler mathematical representation than FIRimplementations, and thus can provide a filter implementation having alower order for a given environment than an equivalent FIR filter.

It is considered desirable to provide a method for implementing digitalfilters with controllable processing delay and performance, applicableto both IIR and FIR filters.

SUMMARY OF THE INVENTION

According to a first aspect of the invention, there is provided a methodof implementing a digital filter, said method comprising, for a currentblock of filter input signal values, the steps of:

first determining of a partial filter input initial condition, using apartitioned filter input signal, and partitioned filter inputcoefficients;

second determining of a partial filter output initial condition, using apartitioned filter output signal, and partitioned filter outputcoefficients; and

realising said digital filter as a sum of outputs of FIR filterelements, wherein inputs of said FIR filter elements are dependent uponsaid partial filter input initial condition, said partial filter outputinitial condition, and said current block of filter input signal values.

According to another aspect of the invention, there is provided adigital filter comprising:

first means for determining of a partial filter input initial condition,using a partitioned filter input signal, and partitioned filter inputcoefficients;

second means for determining of a partial filter output initialcondition, using a partitioned filter output signal, and partitionedfilter output coefficients; and

realising means for realising said digital filter as a sum of outputs ofFIR filter elements, wherein inputs of said FIR filter elements aredependent upon said partial filter input initial condition, said partialfilter output initial condition, and said current block of filter inputsignal values.

According to another aspect of the invention, there is provided a systemusing a digital filter wherein said digital filter comprises:

first means for determining of a partial filter input initial condition,using a partitioned filter input signal, and partitioned filter inputcoefficients;

second means for determining of a partial filter output initialcondition, using a partitioned filter output signal, and partitionedfilter output coefficients; and

realising means for realising said digital filter as a sum of outputs ofFIR filter elements, wherein inputs of said FIR filter elements aredependent upon said partial filter input initial condition, said partialfilter output initial condition, and said current block of filter inputsignal values.

According to another aspect of the invention, there is provided acomputer readable memory medium for storing a program for apparatusimplementing a digital filter, said program comprising:

first code for determining of a partial filter input initial condition,using a partitioned filter input signal, and partitioned filter inputcoefficients;

second code for determining of a partial filter output initialcondition, using a partitioned filter output signal, and partitionedfilter output coefficients; and

code for realising said digital filter as a sum of outputs of FIR filterelements, wherein inputs of said FIR filter elements are dependent uponsaid partial filter input initial condition, said partial filter outputinitial condition, and said current block of filter input signal values.

According to another aspect of the invention, there is provided acomputer program for apparatus implementing a digital filter, saidprogram comprising:

first code for determining of a partial filter input initial condition,using a partitioned filter input signal, and partitioned filter inputcoefficients;

second code for determining of a partial filter output initialcondition, using a partitioned filter output signal, and partitionedfilter output coefficients; and

code for realising said digital filter as a sum of outputs of FIR filterelements, wherein inputs of said FIR filter elements are dependent uponsaid partial filter input initial condition, said partial filter outputinitial condition, and said current block of filter input signal values.

BRIEF DESCRIPTION OF THE DRAWINGS

A preferred embodiment of the invention will now be described, by way ofexample only, with reference to the accompanying drawings, in which:

FIG. 1 depicts the relationship between key equations utilised in afirst embodiment;

FIG. 2 illustrates a flow diagram for determining a filter outputsignal;

FIG. 3 presents a more detailed view of the process flow diagram of FIG.2;

FIG. 4 depicts filter coefficients for a first arrangement, aftersegmentation and zero-padding;

FIG. 5 illustrates an apparatus for implementing the first arrangement;

FIG. 6 depicts a flow diagram for a second arrangement;

FIG. 7 illustrates coefficients for the second arrangement aftersegmentation and zero padding;

FIG. 8 depicts an apparatus for implementing the second arrangement; and

FIG. 9 illustrates how the described arrangements can be practiced usinga general-purpose computer.

DETAILED DESCRIPTION INCLUDING BEST MODE

Where reference is made in any one or more of the accompanying drawingsto steps and/or features, which have the same reference numerals, thosesteps and/or features have, for the purposes of this description, thesame function(s) or operation(s), unless the contrary intention appears.

The general convolution Equation describing a digital filter with aninput x(n) and an output y(n) is as follows:

$\begin{matrix}{{\sum\limits_{m = 0}^{na}{{a(m)} \cdot {y\left( {n - m} \right)}}} = {\sum\limits_{r = 0}^{nb}{{b(r)} \cdot {x\left( {n - r} \right)}}}} & (1)\end{matrix}$

where:

-   -   y(n) is the output sequence    -   x(n) is the input sequence    -   a(n) is the output coefficient window    -   b(n) is the input coefficient window    -   na is the order of the output coefficient window    -   nb is the order of the input coefficient window    -   “m” and “r” are the indices of the summations

The normalised time domain representation of the output of an IIR filterstructure is derived from equation (1), and is provided by the followingmathematical equation:

$\begin{matrix}{{{y(n)} = {{\sum\limits_{r = 0}^{nb}\;{{b(r)} \cdot {x\left( {n - r} \right)}}} - {\sum\limits_{m = 1}^{na}\;{{a(m)} \cdot {y\left( {n - m} \right)}}}}};\mspace{14mu}{{a(0)} = 1}} & (2)\end{matrix}$

where y(n) is the IIR filter output response. If a(m)=0 for all m>0,then this describes an FIR filter. A z-transform representation of y(n)is provided by the following mathematical equation:

$\begin{matrix}{{{Y(z)} = \frac{{X(z)} \cdot {B(z)}}{A(z)}},{{a(0)} = 1.}} & (3)\end{matrix}$

where z is a complex variable; and

X(z) is the z transform of the input sequence x(n), B(z) is the ztransform of the input coefficient window b(n), and A(z) is the ztransform of the output coefficient window a(n).

IIR filters can be implemented using FFT techniques, by decomposing theIIR system into segments, and specifying the initial conditions for eachsegment. This is conveniently performed using z-transform techniques.Thus, Equation (3) can be represented as follows:

$\begin{matrix}{{Y(z)} = {\frac{{X(z)} \cdot {B(z)}}{A(z)} + \frac{{G(z)} - {F(z)}}{A(z)}}} & (4)\end{matrix}$

where F(z) and G(z) are the z-transforms of the initial conditions f(n)and g(n).

The relationship between f(n) and its z transform F(z), and between g(n)and its z transform G(z), are given by the following two equations:

$\begin{matrix}{{F(z)} = {\sum\limits_{n = 0}^{{na} - 1}{{f(n)} \cdot z^{- n}}}} & (5) \\{{G(z)} = {\sum\limits_{n = 0}^{{nb} - 1}{{g(n)} \cdot z^{- n}}}} & (6)\end{matrix}$

The time domain representations for f(n) and g(n) are provided by thefollowing equations:

$\begin{matrix}{{{f(n)} = {\sum\limits_{r = 0}^{{na} - n - 1}\;{{a\left( {n + r + 1} \right)} \cdot {y\left( {{- 1} - r} \right)}}}},{0 \leq n \leq {{na} - 1}}} & (7) \\{{{g(n)} = {\sum\limits_{r = 0}^{{nb} - n - 1}\;{{b\left( {n + r + 1} \right)} \cdot {x\left( {{- 1} - r} \right)}}}},{0 \leq n \leq {{nb} - 1}}} & (8)\end{matrix}$

Considering equation (4), if h₁(n) is defined to be the inversez-transform of B(z)/A(z), and h₂(n) to be the inverse z-transform of1/A(z), then the solution in the time domain to Equation (4) can bewritten as follows:

$\begin{matrix}{{{y(n)} = {{\sum\limits_{r = 0}^{\infty}\;{{h_{1}(r)} \cdot {x\left( {n - r} \right)}}} - {\sum\limits_{r = 0}^{\infty}\;{{h_{2}(r)} \cdot {f\left( {n - r} \right)}}} + {\sum\limits_{r = 0}^{\infty}\;{{h_{2}(r)} \cdot {g\left( {n - r} \right)}}}}};{0 \leq n}} & (9)\end{matrix}$

Equation (9) which is couched in the time domain, shows how the outputy(n) of the IIR filter can be written as the sum of three convolutions.It is noted that the impulse responses h₁(n) and h₂(n) have infinitesummation limits, and hence are not amenable to direct implementation.However, since only N output samples are of interest, Equation (9) canbe re-written in terms of N output samples only, as follows:

$\begin{matrix}{{y(n)} = {{\sum\limits_{r = 0}^{N - 1}\;{{h_{1}(r)} \cdot {x\left( {n - r} \right)}}} - {\sum\limits_{r = 0}^{{n\; a} - 1}\;{{h_{2}(r)} \cdot {f\left( {n - r} \right)}}} + {\sum\limits_{r = 0}^{{n\; b} - 1}\;{{h_{2}(r)} \cdot {g\left( {n - r} \right)}}}}} & (10)\end{matrix}$

where 0<=n<N

Equation (10) shows that the next N output samples of y(n) can bewritten as the sum of three finite convolutions for any section oflength N, provided that the initial conditions which pertain to thatsection are known.

Calculation of the initial conditions (i.e. equations (7) and (8))requires that the previous “nb” input samples, and the previous “na”output samples be available (where “na” and “nb” are the upper limits ofthe summations of the convolutions for h₂ in Equation (10)).

The following substitution of variables is performed in regard toEquations (7) and (8):k=n+r+1

Equations (7) and (8) then have the following resultant form:

$\begin{matrix}{{{f(n)} = {\sum\limits_{k = {n + 1}}^{n\; a}\;{{a(k)} \cdot {y\left( {n - k} \right)}}}},{0 \leq n \leq {{n\; a} - 1}}} & (11)\end{matrix}$

$\begin{matrix}{{{g(n)} = {\sum\limits_{k = {n + 1}}^{n\; b}\;{{b(k)} \cdot {x\left( {n - k} \right)}}}},{0 \leq n \leq {{n\; b} - 1}}} & (12)\end{matrix}$

The convolutions in Equations (10)-(12) are finite, and thus lendthemselves to physical implementation, for example using FFT techniques.The length of the required FFT structure is given by the following:N _(FFT)>=(Maximum value of na or nb)+N  (13)

Equation (10) enables the output y(n) of the filter to be calculated ata future time “n” by calculating three convolutions. Thus, Equation (10)enables the filter output to be calculated at any future time n, where nlies between 0 and N−1. Considering the time domain representation ofthe output signal being calculated, this means that the signal y(n)extends from time 0 onwards towards infinity, calculated in blocks of Nsamples.

For a filter of order N, the latency is proportional to N. Equation (12)shows that the FFT implementation length N_(FFT) must be greater thanthe larger of the order of a(n) and b(n) (i.e., “na” and “nb”respectively, as seen from Equation (1).

The latency of the present filter structure being considered is N, andsince the FFT implementation length N_(FFT) must be greater than theorder of both a(n) and, b(n), the generally used “overlap and save” FFTalgorithm is most efficiently implemented when the delay (in samples),i.e. the order of the filter, is defined by the following equation:N=N _(FFT)/2

This condition limits the order of the IIR filter to N (i.e. length isN+1).

An FFT filter structure of length N can be “executed” as often asdesired in order to obtain the filter output values. Thus, for example,an FFT structure of order 4096 can, if desired, be executed every 512samples (i.e. N_(FFT) is equal to 8N). Under these conditions however,the FFT algorithm becomes very inefficient, where efficiency is definedas the number of multiply-and-accumulate operations required per sampleof output signal.

The problem of efficiency vs delay exists when N<na or N<nb, and can besolved by the method described herein. Since only N output samples ofEquation (10) are of interest, it follows that only N samples of f(n),g(n), h₁(n), h₂(n) are required. The sample values for h₁(n) and h₂(n)are known, and thus solution of Equation (10) is reduced to the problemof finding an efficient method of calculating the first N samples forboth f(n) and g(n). To simplify computation, the new variable M isintroduced, where:M.N=na=nb  (14)

This simplification is not necessary in general. There can be an M valuefor b(n) (ie. M_(b)), and an M value for a(n) (ie. M_(a)). Thecorresponding general conditions are then given byM _(a) .N≧na+1M _(b) .N≧nb+1  (14a)

In order to ensure that Equation (14) is true in general, the sequencesa(n) and b(n) in Equations (11) and (12) are zero padded. This isexplained in more detail with reference to FIGS. 3 and 4. A change innotation is also introduced to Equation (10), namely a subscript “i” isadded to y(n), in order to indicate that the ith block of N samples ofy(n) is being considered, beginning at i=0. With the above mentionedchanges of variables and notation introduced, Equation (10) can bewritten as follows:

$\begin{matrix}{{{{y_{i}(n)} = {{\sum\limits_{r = 0}^{N - 1}\;{{h_{1}^{\prime}(r)} \cdot {x_{i}\left( {n - r} \right)}}} + {\sum\limits_{r = 0}^{N - 1}{{h_{2}^{\prime}(r)} \cdot \left( \;{{g_{i}^{\prime}\left( {n - r} \right)} - {f_{i}^{\prime}\left( {n - r} \right)}} \right)}}}};}{0 \leq n < N}} & (15)\end{matrix}$

where:

-   -   y_(i)(n)=y(n+i.N); where 0≦n<N and 0≦i<∞    -   x_(i)(n)=x(n+i.N); where 0≦n and 0≦i<∞=y_(i)(n)=0; N≦n or n<0    -   h′_(i)(n)=first N samples of h₁(n)    -   h′₂(n)=first N samples of h₂(n)    -   f′(n)=first N samples of f(n) i.e., partial initial conditions        of output at time i.N    -   g′(n)=first N samples of g(n) i.e., partial initial conditions        of input at time i.N

Equation (11) can be rewritten using the new variable M, and bypartitioning y(n) into blocks of N samples, the equation can beexpressed as follows:

$\begin{matrix}{{{{f_{i}^{\prime}(n)} = {\sum\limits_{k = {n + 1}}^{{MN} - 1}\;{{a(k)} \cdot {y\left( {{i \cdot N} + n - k} \right)}}}},{0 \leq n < N}}{{{{Let}\mspace{14mu}{a^{\prime}(n)}} = {a(n)}},{1 \leq n < {M \cdot N}}}} & (16)\end{matrix}$

-   -   a′(n)=0, elsewhere

A similar equation can be written for g_(i)′(n). Equations (11) and (12)can accordingly be rewritten as follows:

$\begin{matrix}{{f_{i}^{\prime}(n)} = {\sum\limits_{j = 1}^{M}\;{\sum\limits_{k = 0}^{N - 1}\;{{a^{\prime}\left( {n - k + {j \cdot N} - 1} \right)} \cdot {y_{i - j}(k)}}}}} & (17) \\{{g_{i}^{\prime}(n)} = {\sum\limits_{j = 1}^{M}\;{\sum\limits_{k = 0}^{N - 1}\;{{b^{\prime}\left( {n - k + {j \cdot N} - 1} \right)} \cdot {x_{i - j}(k)}}}}} & (18)\end{matrix}$

Thus, using Equation (17), the first N samples of f(n) can be calculatedby performing an N point convolution M times. Equation (18) similarlyshows that the first N samples of g(n) can be calculated by performingan N point convolution M times. Equations (15), (17) and (18) providethe conceptual basis for implementing preferred arrangements of theinvention.

Another arrangement is possible by partitioning a′(n) and b′(n)differently. In this method we break a′(n) into sections of length N asfollows.

Let

-   -   a_(m)′(k)=a′(k+m.N), 0≦k<N, 0≦m<M=0 elsewhere

$\begin{matrix}{{f_{i}^{\prime}(n)} = {\sum\limits_{j = 1}^{M}\;{\sum\limits_{k = 0}^{N - 1}\;{\left( {{a_{j - 1}^{\prime}\left( {n + N - k - 1} \right)} + {a_{j}^{\prime}\left( {n - k - 1} \right)}} \right) \cdot {y_{i - j}(k)}}}}} & (19) \\{{g_{i}^{\prime}(n)} = {\sum\limits_{j = 1}^{M}\;{\sum\limits_{k = 0}^{N - 1}\;{\left( {{b_{j - 1}^{\prime}\left( {n + N - k - 1} \right)} + {b_{j}^{\prime}\left( {n - k - 1} \right)}} \right) \cdot {x_{i - j}(k)}}}}} & (20)\end{matrix}$

We note from equation (19) that a_(j-1)′(n+N−k−1) is a time shiftedversion of a_(j-1)′(n+k−1), where the shift is by N samples. If we onlystore coefficients a_(m)(k) and b_(m)(k) then the convolution equations(19) and (20) can be computed by shifting before multiplication. In thefrequency domain is this equivalent to multiplying by a complexexponential. If a Modified Discrete Fourier Transform (MDFT) form of theDFT is used this is equivalent to multiplication by the complex operator−j(√−1). Further details on the MDFT can be found in J. L. Vemet—“RealSignals Fast Fourier Transform: Storage Capacity and Step NumberReduction by Means of an Odd Discrete Fourier Transform”, IEEE Proc.,October 1971 pp 1531-1532.

A special class of IIR filters exist in which b(n) is an impulse, thesefilters being known as ‘All pole IIR filters’. The all pole requirementis expressed mathematically as follows:

-   -   b(n)=b₀, n=0    -   b(n)=0, elsewhere

This class of filter has many applications in signal processingincluding speech synthesis and speech recognition. Further optimisationsof arrangements for such filters can be performed, since there is noneed to calculate g(n), and h₁(n) and h₂(n) are the same.

A similar case can be applied to represent FIR filters if the followingconditions are applied.

-   -   a(n)=0, n>0

Equation (15) can be rewritten to take advantage of furtheroptimisations in this case, since h′₂(n)=1 and f_(i)(n)=0 for all i.Equation (15) can thus be rewritten for the FIR case, and simplified asfollows:

$\begin{matrix}{{y_{i}(n)} = {{\sum\limits_{r = 0}^{N - 1}\;{{h_{1}^{\prime}(r)} \cdot {x_{i}\left( {n - r} \right)}}} + {\sum\limits_{r = 0}^{N - 1}\;{g_{i}^{\prime}\left( {n - r} \right)}}}} & (21)\end{matrix}$

Turning to FIG. 1, a block diagram representation depicting therelationship between the equations (15), (17) and (18) is shown. The keyequations are depicted as 102 (see equation (15)), 100 (see equation(17)), and 104 (see equation (18)). Filter characteristics 106 areprovided as inputs to the process, providing the basis for ascertainingthe a′(n) coefficients (see arrow segment 108) and the b′(n)coefficients (see arrow segment 110). These characteristics 106 alsoprovide the basis for ascertaining the h′₁(r) coefficients and h′₂(r)coefficients (see arrow segment 112). Filter “previous” input values 114are also provided to the process, and are utilised in the equation 102(see arrow segment 116) and in the equation 104 (see arrow segment 118).The “previous” filter output values are also provided to the process,and are utilised in the equation 100 (see dashed arrow segment 128). Theequation 104 outputs the g′_(i)(n) coefficients, and these are providedto the equation 102 as depicted by an arrow segment 120. The equation100 outputs the f′i(n) coefficients, and these are provided to theequation 102 as depicted by an arrow segment 122. The equation 102,having been provided with inputs as described above, outputs a filteroutput y_(i)(n) (depicted as 126) for the ith block of N data samples.This is required not only as the actual output 126 of the filter, butalso as an input to the equation 100 in the next iteration of theprocess, as depicted by the dashed arrow segment 128.

Turning to FIG. 2, a process 212 for the determination of a filteroutput in accordance with equations (15), (17) and (18) is shown. Theprocess 212 commences with start step 200, after which it proceeds to astep 208 where a new input block is obtained. The process 212 proceedsto steps 202 and 204, where current input and output filter initialconditions respectively are calculated. Thereafter, in a step 206, acurrent filter output signal is calculated. The process 212 thenreturns, as depicted by an arrow 210, to the step 208 and repeats aspreviously described.

Turning to FIG. 3, a more detailed flow diagram for the aforementionedprocess, now designated by the reference numeral 324, is shown. Theprocess 324 commences with a start step 300, and progresses to a step302 where a(n) and b(n) coefficients are segmented in time, and paddedwith zeros to form segmented coefficient sets a′(n) and b′(n).Proceeding to a step 304, h′₁(n) and h′₂(n) are calculated in accordancewith Equation (24). In a following step 305, a′(n) and b′(n) arepartitioned into m sections, as described in more detail in regard toFIG. 4. Thereafter in a step 306, a′(n), b′(n), h′₁(n) and h′₂(n) aretransformed from the sampled time domain into a sampled frequencydomain, preferably using a modified Discrete Fourier Transform (MDFT).In a next step 308, transformed values A′(k) are loaded into an “AK”register set, B′(k) values are loaded into a “BK” register set, andH′₁(k) and H′₂(k) are loaded into “H1K” and “H2K” registersrespectively. Proceeding to a step 310, register sets X and Y whichstore previous X_(i-m)(k) and previous Y_(i-m)(k) values respectively,are initialised, typically with zeros and where ‘m’ varies from 1 to M.In a following step 312, initial conditions F_(i)′(k), G_(i)′(k) and{G_(i)′(k)−F_(i)′(k)} are determined. Moving to a step 316, the“present” X_(i)(k) is calculated by appending zeros to the “present”x(n) values, and the resultant sequence is transformed to become the“present” X_(i)(k). Moving to a step 318, the “present” Y_(i)(k) valueis calculated, and inverse transformed into “present” y(n) values whichrepresent the desired filter output. These values are output in a step320. The “present” y(n) value is also zero padded and transformed toY_(i)(k) in a step 322. Moving to a step 314, the next ‘i’ iscalculated, which can be performed by (i) modifying the register sets Xand Y such that X_(i-M)(k) and Y_(i-M)(k) are discarded, and (ii)shifting contents of the registers down such thatX_(i-M)(k)=X_(i-m+1)(k) and Y_(i-)(k)=Y_(i-m+1)(k) for m=M, m=M−1, . . ., m=2, such that the Y(k) calculated at step 322 becomes Y_(i−1)(k) forthe next cycle of the method, and the X(k) calculated at step 316becomes X_(i-1)(k) for the next cycle of the process 324. The process324 then proceeds again to the step 312 and so on.

A first exemplary arrangement is now described, firstly in relation toFIG. 4. Having reference to Equation (2) which shows a general form ofan IIR filter having coefficients a(n) and b(n), for the purposes of theexample, the following is defined:na+1=nb+1=M.N  (22)

-   -   where na=nb=31, N=8, hence M=4

$\begin{matrix}{{\sum\limits_{k = 0}^{31}\;{{a(k)} \cdot {y\left( {n - k} \right)}}} = {\sum\limits_{r = 0}^{31}\;{{b(r)} \cdot {x\left( {n - r} \right)}}}} & (23)\end{matrix}$

-   -   a(0)=1, ie. normalised coefficients

Turning to FIG. 4, the segmentation (see the step 302 in FIG. 3) of thecoefficients a(n) and b(n) proceeds by setting the first sample a(0)(depicted as 400 in FIG. 4) and b(0) (depicted as 402 in FIG. 4) equalto zero and appending N zeros (depicted as 404-406 in FIG. 4) to a(n)and N zeros (depicted as 408-410 in FIG. 4) to b(n) to create thecoefficients a′(n) and b′(n). The coefficients a′(n) and b′(n) are thenbroken into M sections of 2.N samples where each section overlaps theprevious section by N samples. The segmented coefficients a′_(m)(n) andb′_(m)(n) are depicted as 412-414 and 416-418 respectively in FIG. 4.

The coefficients h₁(n) and h₂(n) are calculated (see the step 304 inFIG. 3) from the convolution of Equation (2) where the input is a unitimpulse as shown in the following Equations.

$\begin{matrix}\begin{matrix}{{{h_{1}^{\prime}(n)} = {{b(n)} + {\sum\limits_{r = 1}^{N}\;{{a(r)} \cdot {h_{1}^{\prime}\left( {n - r} \right)}}}}}\mspace{59mu}} \\{{h_{2}^{\prime}(n)} = {{\sum\limits_{r = 1}^{N}\;{{{a(r)} \cdot {h_{2}^{\prime}\left( {n - r} \right)}}\mspace{31mu} 0}} \leq n < N}}\end{matrix} & (24)\end{matrix}$

The coefficients a′_(m)(n), b′_(m)(n), h′₁(n), and h′₂(n) are thentransformed (see the step 306 in FIG. 3) from the sampled time domaininto a sampled frequency domain with a Fast Fourier Transform (FFT), aModified Discrete Fourier Transform (MDFT), or any other variant of theDiscrete Fourier Transform (DFT) such that the operation of convolutionin the time domain is equivalent to multiplication in the transformeddomain. In fact, any other transform can be used in which convolution inthe time domain is equivalent to a less computationally intensiveoperation in the transform domain. The transformed coefficients areA′_(m)(k), B′_(m)(k), H′₁(k), and H′₂(k) respectively. The preferredarrangement uses a MDFT since this form of the DFT is optimised for realcoefficients and transforms 2.N real time samples into N complexfrequency samples. The transformed coefficients using the MDFT are shownmathematically in equations (25)-(28).

$\begin{matrix}{{{A_{m}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}{\left( {{a_{m}^{\prime}(n)} - {j*{a_{m}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{nk} \cdot W_{2 \cdot N}^{n/2}}}},{0 \leq k < {N.}}} & (25) \\{{{B_{m}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}{\left( {{b_{m}^{\prime}(n)} - {j*{b_{m}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{nk} \cdot W_{2 \cdot N}^{n/2}}}},{0 \leq k < {N.}}} & (26) \\{{{H_{1}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}{\left( {{h_{1}^{\prime}(n)} - {j*{h_{1}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{nk} \cdot W_{2 \cdot N}^{n/2}}}},{0 \leq k < {N.}}} & (27) \\{{{H_{2}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}{\left( {{h_{2}^{\prime}(n)} - {j*{h_{2}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{nk} \cdot W_{2 \cdot N}^{n/2}}}},{0 \leq k < {N.}}} & (28)\end{matrix}$

-   -   where 0≦m<M

Turning to FIG. 5, still having regard to the first arrangement, thetransformed coefficients H′₁(k) and H′₂(k) are placed into storageregisters 5050 and 5100. A number of storage buffers 5010-5045 for thetransformed input signal X_(m)(k) and transformed output signal Y_(m)(k)are initialised with zeros. The input signal x(n), which is stored in aregister 5000 is sampled and is processed in blocks of N samples.Previously transformed inputs X_(m)(k) are stored in the storage buffers5010-5025 and previously transformed outputs Y_(m)(k) are stored in thestorage buffers 5030-5045. The transformed contents of the input storagebuffers 5010-5025 are multiplied, using respective multipliers 5160-5175by respective coefficients B′_(m)(k), which are stored in acorresponding number of registers 5055-5070. The multiplication resultsare summed in a summer 5150. The transformed contents of the outputstorage buffers 5030-5045 are similarly multiplied, using respectivemultipliers 5180-5195, by coefficients A′_(m)(k) which are stored inrespective registers 5075-5090. The multiplication result is summed in asummer 5095.

In an alternative arrangement, the two distinct summation points shownin FIG. 5 (ie. 5095 and 5150), can be implemented by a single summationunit. The need for separate summation units becomes evident if M_(a)does not equal M_(b) as shown in equations (14a). In the illustratedarrangement in FIG. 5, M_(a) equals M_(b) which equals M which equals 4.

The result from the summer 5150 is directed to a positive polarity inputof a summer 5096. The result from the summer 5095 is directed to anegative polarity input of the summer 5096. The summer 5096, by virtueof the aforementioned polarities, subtracts the result from the summer5150 from the result from the summer 5095. The result of theaforementioned subtraction is directed to the Inverse MDFT operation5120. In an alternative arrangement, the subtraction can be converted toa summation by negating (ie reversing the polarity) of the coefficientsA′_(m)(k) which are stored in registers 5075-5090. The second half ofthe data (ie. samples from N to 2.N−1) from the Inverse MDFT process5120 are the coefficients f′(n) and g′(n) as stated in equations(17)-(18). The first half (ie. samples from 0 to N−1) is the errorresulting from circular convolution. The first half of the data isdiscarded to create N coefficients “g′(n)-f′(n)” which are stored inregister 5115. The N coefficients “g′(n)-f′(n)” in register 5115 areappended with N zeros to create a sequence of length 2.N and thentransformed via MDFT operation 5110 into N complex frequency samples. Atthis point the X_(m)(k) input storage buffers 5010-5025 and the Y_(m)(k)output storage buffers 5030-5045 are shifted one place down. The inputshifting operation is as follows:

-   -   X⁻³(k) in register 5025 is discarded    -   X⁻²(k) in storage buffer 5020 is placed in X⁻³(k) storage buffer        5025    -   X⁻¹(k) in storage buffer 5015 is placed into X⁻²(k) storage        buffer 5020    -   X₀) in storage buffer 5010 is placed in X⁻¹(k) storage buffer        5015.        The output shifting operation is as follows:    -   Y⁻³(k) in register 5045 is discarded    -   Y⁻²(k) in storage buffer 5040 is placed in Y⁻³(k) storage buffer        5045    -   Y⁻¹(k) in storage buffer 5035 is placed into Y⁻²(k) storage        buffer 5040    -   Y⁻⁰(k) in storage buffer 5030 is placed in Y⁻¹(k) storage buffer        5035.

The shifting operation need not be a copying of data and in thepreferred embodiment of the invention the position of the first storagebuffer in relation to the rest is modified to avoid any copying of data.The N input samples x(n) in register 5000 are appended with N zeros andtransformed via an MDFT operation 5005 to create N complex frequencysamples which are then placed in X₀(k) storage register 5010. The N newcomplex frequency input samples X₀(k) in the register 5010 aremultiplied via multiplier 5155 with coefficients H′₁(k) in the register5050. The previous calculation “G(k)-F(k)” which is stored in a register5110, is multiplied via a multiplier 5195, with coefficients H′₂(k)which are stored in the register 5100. The output from the multipliers5155 and 5195 are summed in a summer 5125, the output of which is thentransformed via an Inverse MDFT operation 5130. The first N samples ofthe resultant are kept and placed in a y(n) output storage buffer 5135.The N samples of y(n) are then appended with N zeros and stored in aregister 5140. The appended N samples are then transformed via a MDFToperation 5145, and the result is placed in a Y₀(k) storage buffer 5030.The procedure then continues for each block of N inputs of x(n) storedin register 5000 creating N outputs of y(n) 5135. An exemplary codefragment relating to FIG. 5 using the Matlab™ Simulation Package,Release 11, v5.1, is contained in the Appendix.

The special case of an all pole filter is similar to above, however thestoring of previous inputs X⁻¹(k), X⁻²(k), and X⁻³(k) in registers5015-5025 is not necessary since the values of B′_(m)(k) are all zero.Also in the all pole case H1(k) and H2(k) are the same so themultiplications at 5155 and 5195 and summation at 5125 can be optimisedto a single multiplication and addition.

Turning to FIG. 6, a process flow diagram for another arrangement, beingan “FIR filter” according to equation (21), is shown. The process 622commences with a start step 600, and progresses to a step 602 where b(n)coefficients are segmented in time, and padded with zeros to form asegmented coefficient set b′(n). Proceeding to a step 604, h′₁(n) iscalculated. In a step 605, b′(n) is partitioned into m sections.Thereafter in a step 606, b′(n), and h′₁(n) are transformed from thesampled time domain into a sampled frequency domain, preferably using amodified Discrete Fourier Transform (MDFT). In a next step 608, thetransformed values B′_(m)(k) are loaded into an “BK” register set, andthe values H′₁(n) are loaded into “H1K” registers respectively.Proceeding to a step 610, the register set X for holding X_(i-m)(k)values is initialised, typically with zeros, and where m varies from 1to M. In a following step 612, the initial conditions G′_(i)(k) arecalculated. Moving to a step 616, the “present” X_(i)(k) is calculatedby appending zeros to the “present” x(n) values, and the resultantsequence is transformed to become the “present” X_(i)(k). Moving to astep 618, the “present” Y(k) value is calculated, and inversetransformed into “present” y(n) which is the desired filter output,these being output in a step 620. Moving to a step 614 the next ‘i’ iscalculated, which can be considered to be the action of modifyingregister set X such that X_(i−M)(k) is discarded, and the registervalues are shifted down such that X_(i−m)(k)=X_(i−m+1)(k) for m=M,m=M−1, . . . , m=2, such that X(k) value calculated at the step 616becomes the X_(i−) 1(k) value for the next cycle. The method 622 thenproceeds to the step 612 and so on.

Turning to FIG. 7, exemplary data for the second arrangement is shown.Having reference to Equation (21) which relates to an FIR filter havingcoefficients b(n), equations (22) and (23) are restated here for the FIRcase, the restated equations being designated as Equations (29) and(30).nb+1=M.N  (29)

-   -   and nb=31, N=8, hence M=4

$\begin{matrix}{{y(n)} = {\sum\limits_{r = 0}^{31}\;{{b(r)} \cdot {x\left( {n - r} \right)}}}} & (30)\end{matrix}$

The segmentation of the coefficients b(n) proceeds by setting the firstsample b(0) (depicted as 702 in FIG. 7) equal to zero and appending Nzeros (depicted as 708-710 in FIG. 7) to b(n) to create the coefficientsb′(n). The coefficients b′(n) are then broken into M sections of 2.Nsamples each, where each section overlaps the previous section by Nsamples. The segmented coefficients b′_(m)(n) are shown as 716-718 inFIG. 7.

The coefficients h′₁(n) are the first N (where N=8) samples of b(n) andh₂(n) is equal to “1”, this being expressed mathematically as follows:h′ ₁(n)=b(n) n=0 . . . 7  (31)

The coefficients b′_(m)(n), and h′₁(n) are then transformed from thesampled time domain into a sampled frequency domain with a Fast FourierTransform (FFT), a Modified Discrete Fourier Transform (MDFT), or anyother variant of the Discrete Fourier Transform (DFT) such that theoperation of convolution in the time domain is equivalent tomultiplication in the transformed domain. The transformed coefficientsare B′_(m)(k), and H′₁(k) respectively. An MDFT is again preferably usedsince this form of the DFT is optimised for real coefficients andtransforms 2.N real time samples into N complex frequency samples. Thetransformed coefficients using the MDFT, shown mathematically inequations (25)-(28), are restated here for convenience as follows:

$\begin{matrix}{{{B_{m}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}\;{\left( {{b_{m}^{\prime}(n)} - {j*{b_{m}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{n\; k} \cdot W_{2.N}^{n/2}}}},{0 \leq k < {N.}}} & (32) \\{{{H_{1}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}\;{\left( {{h_{1}^{\prime}(n)} - {j*{h_{i}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{n\; k} \cdot W_{2.N}^{n/2}}}},{0 \leq k < {N.}}} & (33)\end{matrix}$

-   -   where 0≦m<M

Turning to FIG. 8, an apparatus 8192 for implementing the aforementionedsecond arrangement is shown. The transformed coefficients H′₁(k)relating to the second arrangement are placed into a storage register8050. Storage buffers 8010-8025 for the transformed input signalX_(m)(k) are initialised with zeros. The input signal x(n), which isstored in a register 8000, is sampled and is processed in blocks of Nsamples. Previously transformed inputs X_(m)(k) are stored in thestorage buffers 8010-8025. The transformed contents of the input storagebuffers 8010-8025 are multiplied using respective multipliers 8160-8175,by respective coefficients B′_(m)(k) which are stored in respectiveregisters 8055-8070. The multiplication results are summed in a summer8150, and then the result is stored in a register 8190.

Thereafter, the X_(m)(k) output storage buffers 8010-8025 are shiftedone place down. The input shifting operation is as follows:

-   -   X⁻³(k) in register 8025 is discarded    -   X⁻²(k) in storage buffer 8020 is placed in X⁻³(k) storage buffer        8025    -   X⁻¹(k) in storage buffer 8015 is placed in X⁻²(k) storage buffer        8020    -   X⁻⁰(k) in storage buffer 8010 is placed in X⁻¹(k) storage buffer        8015.

The shifting operation need not comprise a copying of data andpreferably the position of data in the first storage buffer in relationto data in the rest of the storage buffers is modified to avoid anycopying of data. The N input samples x(n) in the register 8000 areappended with N zeros and transformed via an MDFT operation 8005 tocreate N complex frequency samples which are then placed in the X₀(k)storage register 8010. The N new complex frequency input samples X₀(k)in the register 8010 are then multiplied using a multiplier 8155 withcoefficients H′₁(k) from the register 8050. The multiplication outputthereof is then summed in a summer 8125 together with the value in theregister 8190. The output of the summer 8125 is then transformed via anInverse MDFT operation 8130. The first N samples of the resultant arekept and placed in a y(n) output storage buffer 8135, these samplesbeing the desired output. The aforementioned procedure then continuesfor each block of N inputs of x(n) stored in the register 8000, therebycreating N outputs of y(n) stored in register 8135.

The aforementioned arrangements can be implemented using ageneral-purpose computer 900 as illustrated in FIG. 9. The variousprocesses described are implemented as software executing on thecomputer 900. In particular, the various process steps are effected byinstructions in the software that are carried out by the computer 900.The software can be stored in a computer readable medium, is loaded ontothe computer 900 from the medium, and then executed by the computer 900.The use of the computer program product in the computer preferablyimplements a high order filter with desired attributes and performance.The computer system 900 includes a computer module 902, a filter inputcard 916, and input devices keyboard 918 and pointing device 920. Inaddition, the computer system 900 can have any of a number of otheroutput devices including a display 924. The computer system 900 isconnected to one or more other computers using an appropriatecommunication channel such as a modem communications path, a computernetwork, or the like. The computer network can include a local areanetwork (LAN), a wide area network (WAN), an Intranet, and/or Internet.Thus, for example, signals are input via filter input card 916, controlcommands are input via keyboard 918, and the desired signal having beenprocessed by the desired high order filter is output via filter outputcard 910. The computer 902 itself includes at least one centralprocessing unit 904 (simply referred to as a processor hereinafter), amemory 906 which can include random access memory (RAM) and read-onlymemory (ROM), an input/output (IO) interface 908, a filter inputinterface 922, and one or more storage devices generally represented bya block 912. The storage device(s) 912 can include one or more of thefollowing: a floppy disk, a hard disk drive, a magneto-optical diskdrive, CD-ROM, magnetic tape or any other of a number of non-volatilestorage devices well known to those skilled in the art. Each of thecomponents 904, 906, 908, 912 and 922, is typically connected to one ormore of the other devices via a bus 914 that in turn can include data,address, and control buses. The filter interface 922 is connected to thefilter input 916 and filter output 910 cards, and provides input fromthe filter input card 916 to the computer 902 and from the computer 902to the filter output card 910.

The described arrangements can, alternatively, be implemented on one ormore integrated circuits. This mode of implementation allowsincorporation of the filters into individual pieces of equipment wherethe functionality provided by such filters is required.

The foregoing describes only some particular embodiments of the presentinvention, and modifications can be made thereto without departing fromthe scope of the invention, the embodiments being illustrative and notrestrictive.

APPENDIX function y=iirfft2(b,a,x,N) % IIRFFT2 IIR fast convolutionfilter algorithm no. 2 % 1. y = IIRFFT2( b , a , x , N, bits, fixed,dither) % % IIRFFT2 processes the difference equation given by % %a(1)*y(n) = b(1)*x(n) + b(2)*x(n−1) + ... + b(nb+1)*x(n−nb) % −a(2)*y(n−1) − ... − a(na+1)*y(n−na) % % where the response to an inputx(n) is given by the following % equation. % B(z)    1 % Y(z) = ----X(z) + --- ( G(z)−F(z) ) % A(z)   A(z) % % and F(z) = initial conditionsof output sequence % G(z) = initial conditions of input sequence. % %na−n−1      nb−n−1 % f(n) = sum a(n+r+1).y(−1−r), g(n) =sum b(n+r+1).x(−1−r) % r=0       r=0 % % To calculate N outputs we needthe first N initial conditions, the % first N samples of B(z)/A(z), andthe first N samples of 1/A(z). % % Let: % H1(z) = z-transform first Nsamples of inverse z-transform B(z)/A(z) % H2(z) = z-transform first Nsamples of inverse z-transform 1/A(z) % M = max(na,nb)/N % % Theequations above give a method for processing the IIR in the % frequencydomain. % % Y(z) = H1(z).X(z) + H2(z).(G(z)−F(z)) % % To calculate F(z)& G(z) the cofficients are partitioned in to M × N % point sections. % %Copyright (C) Clarity EQ Pty Limited. All rights reserved.error(nargchk(3,4,nargin)); if a(1)==0 error(‘First term a(1) cannotequal zero’); end % Make all column vectors [r,c]=size(x); x=x(:);b=b(:); a=a(:); na=length(a); nb=length(b); nx=length(x); nab=max([nanb]); if nargin==3|isempty(N) N=2{circumflex over( )}nextpow2(ceil((nab−1)/4)); end N=2{circumflex over( )}nextpow2(N);  % overlap/partion size, FFT size = 2.NM=ceil(nab/N);  % no. of partitions for this filter K=ceil(nx/N);  % no.of iterations required for output if N>nab error(‘Block size greaterthan order of IIR’); % use IIRFFT when N>=nab end % Setup time < 0initial conditions y=zeros((K+1)*N+nab,1);x=[zeros(nab,1);x;zeros((K+1)*N−nx, 1)]; % Create FIRs in Freq domain %EQUATION 24H1=fft(filter(b(1:min(nb,N)),a(1:min(na,N)),[1;zeros(N−1,1)]),2*N);H2=fft(filter(1,a(1:min(na,N)),[1;zeros(N−1,1)]),2*N); % Initialiseblock shift buffer for I/O Ybuf=zeros(2*N,M); Xbuf=zeros(2*N,M); %Partition a(n) and b(n) to create a′==aa and b′==bbaa=[0;a(2:na);zeros((M+1)*N−na,1)]; bb=[0;b(2:nb);zeros((M+1)*N−nb,1)];Abuf=zeros(2*N,M); Bbuf=zeros(2*N,M); for k=1:MAbuf(:,k)=fft(aa(1+(k−1)*N:(k+1)*N),2*N);Bbuf(:,k)=fft(bb(1+(k−1)*N:(k+1)*N),2*N); end % Iterate K times - untilall x(n) processed for i=1:K % Each iteration is a calculation of Noutput samples % given na−1&nb−1 initial conditions n=(i−1)*N + nab + 1;% Current zero time index - ith block (5000 in fig 5) % Calccoefficients f(n) and g(n) FF=sum(Ybuf.*Abuf,2); %% EQUATION 17: outputof summer 5095 fig 5 GG=sum(Xbuf.*Bbuf,2); %% EQUATION 18: output ofsummer 5150 fig 5 tmp=real(ifft(GG−FF)); %% GG−FF: output of summer 5096in fig 5 G_F=fft(tmp(N+1:2*N),2*N); %% G−F: 5110 in fig 5 % Shift inputbuffer and add new entry Xbuf(:,2:M)=Xbuf(:,1:M−1);Xbuf(:,1)=fft(x(n:n+N−1),2*N); tmp=real(ifft(H1.*Xbuf(:,1)+H2.*G_F)); %%EQUATION 15: 5125 and 5130 in fig 5. y(n:n+N−1)=tmp(1:N); %% 5135 in fig5 % Shift output buffer and add new I/O entry Ybuf(:,2:M)=Ybuf(:,1:M−1);Ybuf(:,1)=fft(y(n:n+N−1),2*N); end % Get output vector and remove delayy=y(nab+1:nab+nx); if r==1 y=y.′; end.

1. A method of digitally filtering an input electronic signal to therebyimplement a digital filter, said method being performed by a processorand comprising, for a current block of filter input signal valuesobtained from the input signal, the steps of: calculating a partialfilter input initial condition, using a partitioned filter input signal,and partitioned filter input coefficients; calculating a partial filteroutput initial condition, using a partitioned filter output signal, andpartitioned filter output coeffcients; and calculating an output of saiddigital filter as a sum of outputs of filter elements, wherein inputs ofsaid filter elements are dependent upon said partial filter inputinitial condition, said partial filter output initial condition, andsaid current block of filter input signal values.
 2. The methodaccording to claim 1, wherein the step of calculating a partial filterinput initial condition comprises the sub-steps of: calculating firstpartitioning of filter input signals to form a first partitioned dataset; calculating second partitioning of filter input coefficients toform a second partitioned data set; and calculating a convolution ofsaid first and said second data sets by the sub-steps of: (i) applying atransform to each of said first and said second data sets to therebyform corresponding first and second transformed data sets; (ii)performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter input initial condition.
 3. The methodaccording to claim 1, wherein said step of calculating a partial filteroutput initial condition comprises the sub-steps of: calculating firstpartitioning of filter output signals to form a first partitioned dataset; calculating second partitioning of filter output coefficients toform a second partitioned data set; and calculating a convolution ofsaid first and said second data sets by the sub-steps of: (i) applying atransform to each of said first and said second data sets to therebyform corresponding first and second transformed data sets; (ii)performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter output initial condition.
 4. The methodaccording to anyone of claims 1 to 3, wherein a size of the partition isequal to a size of the current block.
 5. The method according to anyoneof claims 1 to 3, wherein a size of the partition is dependent upon oneof a required filter latency and a required filter computationalefficiency.
 6. The method according to anyone of claims 1 to 3, whereinsaid digital filter is one of a Finite Impulse Response filter, anInfinite Impulse Response Filter, and an All Pole Filter.
 7. A digitalfilter for filtering an input electronic signal said filter comprising:first computational means for calculating a partial filter input initialcondition, using a partitioned filter input signal, and partitionedfilter input coefficients; second computational means for calculating apartial filter output initial condition, using a partitioned filteroutput signal, and partitioned filter output coeffcients; and thirdcomputational means for calculating an output of said digital filter asa sum of outputs of filter elements, wherein inputs of said filterelements are dependent upon said partial filter input initial condition,said partial filter output initial condition, and said current block offilter input signal values.
 8. The digital filter according to claim 7,wherein said first computational means comprises: first partitioningmeans for calculating partitioning of filter input signals to form afirst partitioned data set; second partitioning means for calculatingpartitioning of filter input coefficients to form a second partitioneddata set; and convolving means for calculating a convolution of saidfirst and said second data sets by the sub-steps of: (i) applying atransform to each of said first and said second data sets to therebyform corresponding fist and second transformed data sets; (ii)performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter input initial condition.
 9. The digitalfilter according to claim 7, wherein said second computational meanscomprises: first partitioning means for calculating partitioning offilter output signals to form a fist partitioned data set; secondpartitioning means for calculating partitioning of filter outputcoefficients to form a second partitioned data set; and convolving meansfor calculating a convolution of said first and said second data sets bythe sub-steps of: (i) applying a transform to each of said first andsaid second data sets to thereby form corresponding first and secondtransformed data sets; (ii) performing, on said corresponding first andsecond transformed data sets, a transform operation which is equivalentto convolution in the time domain, to thereby form a third data set; and(iii) applying a corresponding inverse transform to said third data set,to thereby determine said partial filter output initial condition. 10.The digital filter according to anyone of claims 7 to 9, wherein a sizeof the partition is equal to a size of the current block.
 11. Thedigital filter according to any one of claims 7 to 9, wherein a size ofthe partition is dependent upon one of a required filter latency and arequired filter computational efficiency.
 12. The digital filteraccording to anyone of claims 7 to 9, wherein said digital filter is oneof a Finite Impulse Response filter, an Infinite Impulse ResponseFilter, and an All Pole Filter.
 13. An electronic system using a digitalfilter for processing an input electronic signal, wherein said digitalfilter comprises: first computational means for calculating a partialfilter input initial condition, using a partitioned filter input signal,and partitioned filter input coeffcients; second computational means forcalculating a partial filter output initial condition, using apartitioned filter output signal, and partitioned filter outputcoeffcients; and third computational means for calculating an output ofsaid digital filter as a sum of outputs of filter elements, whereininputs of said filter elements are dependent upon said partial filterinput initial condition, said partial filter output initial condition,and said current block of filter input signal values.
 14. The systemaccording to claim 13, wherein said first computational means comprise:first partitioning means for calculating partitioning of filter inputsignals to form a first partitioned data set; second partitioning meansfor calculating partitioning of filter input coefficients to form asecond partitioned data set; and convolving means for calculating aconvolution of said first and said second data sets by the sub-steps of:(i) applying a transform to each of said first and said second data setsto thereby form corresponding first and second transformed data sets;(ii) performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter input initial condition.
 15. The systemaccording to claim 13, wherein said second computational meanscomprises: first partitioning means for calculating partitioning offilter output signals to form a first partitioned data set; secondpartitioning means for calculating partitioning of filter outputcoefficients to form a second partitioned data set; and convolving meansfor calculating a convolution of said first and said second data sets bythe sub-steps of: (i) applying a transform to each of said first andsaid second data sets to thereby form corresponding first and secondtransformed data sets; (ii) performing, on said corresponding first andsecond transformed data sets, a transform operation which is equivalentto convolution in the time domain, to thereby form a third data set; and(iii) applying a corresponding inverse transform to said third data set,to thereby determine said partial filter output initial condition. 16.The system according to anyone of claims 13 to 15, wherein a size of thepartition is equal to a size of the current block.
 17. The systemaccording to anyone of claims 13 to 15, wherein a size of the partitionis dependent upon one of a required filter latency and a required filtercomputational efficiency.
 18. The system according to anyone of claims13 to 15, wherein said digital filter is one of a Finite ImpulseResponse filter, an Infinite Impulse Response Filter, and an All PoleFilter.
 19. A computer readable memory medium storing a computer programfor an electronic apparatus implementing a digital filter for filteringan input electronic signal, said program comprising: first code forcalculating of a partial filter input initial condition, using apartitioned filter input signal, and partitioned filter inputcoefficients; second code for calculating of a partial filter outputinitial condition, using a partitioned filter output signal, andpartitioned filter output coefficients; and code for calculating anoutput of said digital filter as a sum of outputs of filter elements,wherein inputs of said filter elements are dependent upon said partialfilter input initial condition, said partial filter output initialcondition, and said current block of filter input signal values.
 20. Thecomputer readable memory medium according to claim 19, wherein saidfirst code comprises: first code for calculating partitioning of filterinput signals to form a first partitioned data set; second code forcalculating partitioning of filter input coefficients to form a secondpartitioned data set; and code for calculating a convolution of saidfirst and said second data sets by the sub-steps of: (i) applying atransform to each of said first and said second data sets to therebyform corresponding first and second transformed data sets; (ii)performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter input initial condition.
 21. The computerreadable memory medium according to claim 19, wherein said second codecomprises: first code for calculating partitioning of filter outputsignals to form a first partitioned data set; second code forcalculating partitioning of filter output coeffcients to form a secondpartitioned data set; and code for calculating a convolution of saidfirst and said second data sets by the sub-steps of: (i) applying atransform to each of said first and said second data sets to therebyform corresponding first and second transformed data sets; (ii)performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter output initial condition.
 22. The computerreadable memory medium according to anyone of claims 19 to 21, wherein asize of the partition is equal to a size of the current block.
 23. Thecomputer readable memory medium according to anyone of claims 19 to 21,wherein a size of the partition is dependent upon one of a requiredfilter latency and a required filter computational efficiency.
 24. Thecomputer readable memory medium according to anyone of claims 19 to 21,wherein said digital filter is one of a Finite Impulse Response filter,an Infinite Impulse Response Filter, and an All Pole Filter.